Show / Hide Table of Contents

对于大部分的查询场景中,开发者只是希望能以最快的速度来拼接 Where 条件。而这时如果还手工编写 SqlTree 或者组装 CommonQueryCriteria 会显得比较麻烦。框架对于这种场景,添加了一些扩展方法,来方便开发者快速拼接查询条件。

快速示例 - CommonQueryCriteria 的快速条件拼接

public BookList GetBy(BookSearchCriteria criteria)
{
    var cqc = new CommonQueryCriteria();

    cqc.AddIf(Book.NameProperty, PropertyOperator.Contains, criteria.BookName);
    cqc.AddIf(Book.CodeProperty, PropertyOperator.Contains, criteria.BookCode);
    cqc.AddIf(Book.PriceProperty, PropertyOperator.GreaterEqual, criteria.BookPrice);

    return this.GetBy(cqc);
}

上述代码中,如果 criteria.BookName 存在值时,则会为 Query 的 Where 中添加上 Book.Name Contains criteria.BookName 这个条件。

快速示例 - SqlTree 的快速条件拼接

using static Rafy.Domain.ORM.Query.FactoryMethods;

[RepositoryQuery]
public virtual BookList GetBy(BookSearchCriteria criteria)
{
    var q = Query(this);

    q.AddConstraintIf(Book.NameProperty, PropertyOperator.Contains, criteria.BookName);
    q.AddConstraintIf(Book.CodeProperty, PropertyOperator.Contains, criteria.BookCode);
    q.AddConstraintIf(Book.PriceProperty, PropertyOperator.GreaterEqual, criteria.BookPrice);

    return (BookList)this.QueryData(q);
}
  • Improve this Doc
In This Article
Back to top 有问题请联系 9474649@qq.com。